昨天在1342題中,我用指標改寫簡單的數字運算,體會了「用指標間接操作變數」的基本觀念。今天我們要更進一步,把指標應用在「陣列的存取」上,這樣就能把指標和陣列的關係連起來。
leetcoee1295.題目介紹:Find Numbers with Even Number of Digits
給一個整數陣列,請回傳有「偶數位數」的數字總共有幾個。
範例:
輸入:nums = [12,345,2,6,7896]
過程:12 (2 位數)、345 (3 位數)、2 (1 位數)、6 (1 位數)、7896 (4 位數)
輸出:2 (因為 12 和 7896 是偶數位數)
心得
這一題讓我第一次真正體會到 指標與陣列的關係:
在 for 裡面,我沒有用 nums[i],而是用了 *(p + i),這代表「從指標 p 出發,往後移 i 個元素的位置,再取出它的值」。換句話說,nums[i] 和 *(p + i) 完全等價,只是寫法不同。
雖然表面上看起來更麻煩,但這種寫法能幫助我真正理解陣列就是一段連續記憶體,而指標則是存放記憶體位置的變數 這個觀念會在我們之後用 malloc 配置陣列時變得更自然。